A typical data processing system includes one or more host computers and a data storage subsystem. Moreover, in many computing environments data integrity is important, if not necessary. Consequently, a secondary storage subsystem is provided to maintain a backup of data stored on a primary storage subsystem. It will be appreciated that the backup data must replicate as closely as possible the original data. The order in which data or “transactions” are stored may be important with certain transactions being dependent upon other, prior transactions. Thus consistency of data requires that the order of any dependent transactions be maintained during the replication. A conventional method by which consistency has been maintained is to transfer transactions to the secondary storage in the same order as they arrive from the host, waiting for each transaction to be acknowledged by the secondary site before beginning the transfer of the next transaction.
However, a one-transaction-at-a-time process has an adverse effect on the performance of the replication system, particularly as the distance increases between the replication manager and the secondary site. And, such an inefficient use of bandwidth may even become cost prohibitive.